[Talend]ETL処理後のCSVをAmazon S3へアップする
前回までのジョブ定義にS3へのアップ処理を追加する
前回までのジョブ定義についてはこちらから参照して下さい。
- S3へアップする方法として
- Talendで用意されているAmazonS3用のコンポーネントを利用する。
- javaコードを記述してアップロード
があります。
tS3Putでジョブ定義をしてみる
前者を利用する場合は下記からコンポーネントをドラッグ&ドロップしてステージに配置します。今回対象となるコンポーネントはtS3Putです。 早速ステージに配置してみると下記のように【外部モジュールのインストールが必要です。】と表示されますので、外部モジュールがインストールされていない場合にはインストールを済ませましょう。 インストールをクリックすると下記のような画面が表示され、aws-java-sdk-1.9.13.jarがインストールされます。 インストールが終わったので、コンポーネントを利用するために必要情報を設定します。具体的にはAccess Key、Secret Key、アップ対象のバケット名、アップ元対象のファイル名、アップ先対象のファイル名です。 設定が終わったらtFileOutputDelimitedで右クリックしてトリガを選んで【コンポーネントがOKの場合】で処理線を結びます。
実行してみる
実行前のS3バケットの状態 ジョブを実行した結果 実行後のS3バケットの状態 以上がTalendで用意されているtS3Putを使ったジョブ定義でした。
tJavaコンポーネントでS3へアップロードしてみる
tS3Putだけで十分なのですが、次はtJavaコンポーネントを使って同じような処理を実現するジョブ定義をやってみます。 まずはステージ上のtS3Putを一旦削除してtJavaコンポーネントをドラッグ&ドロップで配置し、tFileOutputDelimited上で右クリックして【コンポーネントがOKの場合】で処理線を定義します。 次にコンテキストを設定します。Contextsタブに切り替えて変数と値をセットします。(下記のように設定しました。) tJavaを選択して、下記のようにコードを記述します。(コマンド実行するだけのものですが)
実行してみる
実行前のS3バケットの状態 ジョブを実行した結果 実行後のS3バケットの状態
まとめ
どちらもちゃんと指定したS3バケットへ処理結果のCSVファイルがアップされていることが確認できました。 まぁjavaコードを書かなくてもアップできる簡単なtS3Putを使った方がシンプルでいいと思いますが、アップロード対象となるファイルが複数あったりした場合はtJavaのコンポーネントを使った方がいいのかもしれません。 まだTalendに触れて間もないので、今は色々動かしてみてると言うことでご容赦ください。m(_ _)m